package com.ruoyi.system.service;

import com.ruoyi.common.core.domain.entity.RestaurantBalanceDetail;
import com.ruoyi.common.core.domain.entity.RestaurantCustomer;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.service.req.CustomerQueryDTO;
import com.ruoyi.system.service.req.InnerCustomerAddDTO;
import com.ruoyi.system.service.req.NormalCustomerAddDTO;
import com.ruoyi.system.service.req.UpdateCustomerDTO;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Author: ruohao
 * @Date: 2023/8/10
 **/
public interface RestaurantCustomerService {
    List<RestaurantCustomer> getNormalCustomer(CustomerQueryDTO customerQueryDTO);

    List<RestaurantCustomer> getInnerCustomer(CustomerQueryDTO customerQueryDTO);

    List<RestaurantCustomer> getCustomer(RestaurantCustomer restaurantCustomer);

    RestaurantCustomer getNormalCustomerById(Long id);

    RestaurantCustomer getCustomerByUserId(String customerId);

    RestaurantCustomer getInnerCustomerById(Long id);

    Boolean createInnerCustomer(InnerCustomerAddDTO innerCustomerAddDTO, SysUser operator);

    Boolean createNormalCustomer(NormalCustomerAddDTO normalCustomerAddDTO, SysUser operator);

    Boolean createCustomer(RestaurantCustomer restaurantCustomer);

    Boolean updateCustomerByUserId(RestaurantCustomer restaurantCustomer);

    Boolean updateCustomer(UpdateCustomerDTO updateCustomerDTO, SysUser operator);

    Boolean comsumeCustomerBalance(Long id, BigDecimal amount, String reason, SysUser operator);

    RestaurantBalanceDetail changeCustomerBalance(Long id, BigDecimal amount, String reason, Integer type, SysUser operator);

    public int deleteByIds(List<Long> ids);
}
